package proyecto.ort.edu.uy.web.presentacion;

import java.io.Serializable;
import java.util.Date;

import proyecto.ort.edu.uy.dominio.AreaDeTrabajo;
import proyecto.ort.edu.uy.dominio.Tarea;

public class SoporteReporte implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2494361034508144476L;

	private Integer creadas = 0;
	private Integer finalizadas = 0;
	private Integer finalizadasVencidas = 0;
	private Integer vencidasSinFinalizar = 0;
	private Integer prioridadCritica = 0;
	private Integer prioridadMuyAlta = 0;
	private Integer prioridadAlta = 0;
	private Integer prioridadMedia = 0;
	private Integer prioridadBaja = 0;
	private Integer prioridadMuyBaja = 0;
	private AreaDeTrabajo areaDelReporte;
	private Date fechaIni;
	private Date fechaFin;
	public Integer getCreadas() {
		return creadas;
	}
	public void setCreadas(Integer creadas) {
		this.creadas = creadas;
	}
	public Integer getFinalizadas() {
		return finalizadas;
	}
	public void setFinalizadas(Integer finalizadas) {
		this.finalizadas = finalizadas;
	}
	public Integer getFinalizadasVencidas() {
		return finalizadasVencidas;
	}
	public void setFinalizadasVencidas(Integer finalizadasVencidas) {
		this.finalizadasVencidas = finalizadasVencidas;
	}
	public Integer getVencidasSinFinalizar() {
		return vencidasSinFinalizar;
	}
	public void setVencidasSinFinalizar(Integer vencidasSinFinalizar) {
		this.vencidasSinFinalizar = vencidasSinFinalizar;
	}
	public Integer getPrioridadCritica() {
		return prioridadCritica;
	}
	public void setPrioridadCritica(Integer prioridadCritica) {
		this.prioridadCritica = prioridadCritica;
	}
	public Integer getPrioridadMuyAlta() {
		return prioridadMuyAlta;
	}
	public void setPrioridadMuyAlta(Integer prioridadMuyAlta) {
		this.prioridadMuyAlta = prioridadMuyAlta;
	}
	public Integer getPrioridadAlta() {
		return prioridadAlta;
	}
	public void setPrioridadAlta(Integer prioridadAlta) {
		this.prioridadAlta = prioridadAlta;
	}
	public Integer getPrioridadMedia() {
		return prioridadMedia;
	}
	public void setPrioridadMedia(Integer prioridadMedia) {
		this.prioridadMedia = prioridadMedia;
	}
	public Integer getPrioridadBaja() {
		return prioridadBaja;
	}
	public void setPrioridadBaja(Integer prioridadBaja) {
		this.prioridadBaja = prioridadBaja;
	}
	public Integer getPrioridadMuyBaja() {
		return prioridadMuyBaja;
	}
	public void setPrioridadMuyBaja(Integer prioridadMuyBaja) {
		this.prioridadMuyBaja = prioridadMuyBaja;
	}
	public AreaDeTrabajo getAreaDelReporte() {
		return areaDelReporte;
	}
	public void setAreaDelReporte(AreaDeTrabajo adt) {
		this.areaDelReporte = adt;
	}
	public Date getFechaIni() {
		return fechaIni;
	}
	public void setFechaIni(Date fechaIni) {
		this.fechaIni = fechaIni;
	}
	public Date getFechaFin() {
		return fechaFin;
	}
	public void setFechaFin(Date fechaFin) {
		this.fechaFin = fechaFin;
	}
	
	public SoporteReporte(AreaDeTrabajo adt, Date fechaIni, Date fechaFin) {
		if(adt != null && fechaIni != null && fechaFin != null){
			this.areaDelReporte = adt;
			this.fechaIni = fechaIni;
			this.fechaFin = fechaFin;
			calcularDatos();
		}
	}
	
	private void calcularDatos(){
		if(areaDelReporte.getLstTareas() != null){
			for(Tarea t: areaDelReporte.getLstTareas()){
				if(t.getFechaCreacion().compareTo(this.fechaIni) >= 0 && t.getFechaCreacion().compareTo(this.fechaFin) <= 0 ){
					creadas ++;
					switch(t.getPrioridad().getIdPrioridad()){
					case 1: prioridadCritica++ ;
					break;
					case 2: prioridadMuyAlta++;
					break;
					case 3: prioridadAlta++;
					break;
					case 4: prioridadMedia++;
					break;
					case 5: prioridadBaja++;
					break;
					case 6: prioridadMuyBaja++;
					break;
					}
					
				}
				if(t.getFechaFinalizacion() != null){
				if(t.getFechaFinalizacion().compareTo(this.fechaIni) >= 0 && t.getFechaFinalizacion().compareTo(fechaFin) <=0){
					finalizadas++;
					if(t.getFechaVencimiento() != null){
						if(t.getFechaVencimiento().compareTo(t.getFechaFinalizacion()) <= 0){
							finalizadasVencidas++;
						}
					}
				}
				}else{
					Date hoy = new Date();
					if(t.getFechaVencimiento() != null){
						if(t.getFechaVencimiento().compareTo(hoy) <= 0){
							vencidasSinFinalizar++;
						}
					}
				}
				
			}
		}
	}
	
}
